package com.ebt.m.proposal_v2.mvp.contract;

import android.support.v4.app.FragmentManager;

import com.ebt.m.proposal_v2.bean.ArgProposalDetail;
import com.ebt.m.proposal_v2.bean.AudioTap;
import com.ebt.m.proposal_v2.bean.ShareBody;
import com.ebt.m.proposal_v2.mvp.base.IPresenter;
import com.ebt.m.proposal_v2.mvp.base.IView;

import okhttp3.MultipartBody;

/**
 * @author archer.qi
 *         Created on 2017/5/15.
 */
public interface ProposalDetailContract {

    public interface View extends IView {

        /**
         * 初始化TopBar & BottomBar
         */
        void initBarView();

        /**
         * 初始化WebView
         */
        void initWebView();

        /**
         * 获取传递参数
         *
         * @return
         */
        ArgProposalDetail getArgument();

        /**
         * 检查预览地址
         */
        void checkPreviewUrl();

        /**
         * 提示
         *
         * @param content
         */
        void showToast(String content);

        /**
         * 获取FragmentManager（DialogFragment所需）
         *
         * @return
         */
        FragmentManager getFrgManager();

        /**
         * 设置无语音状态
         */
        void setNoAudio();

        /**
         * 设置有语音状态
         *
         * @param duration
         */
        void setAudio(long duration);

        /**
         * 初始化语音
         */
        void initAudioResource();

        /**
         * 是否隐藏BottomBar｛已发送或以查看的计划书不允许编辑｝
         *
         * @param shown
         */
        void setBottomBarShown(boolean shown);

        /**
         * 计划书｛已发送、以查看｝预览->详情模式
         */
        void initViewByDetailMode();

        /**
         * 计划书｛未发送｝预览 -> 预览模式
         */
        void initViewByPreviewMode();

        /**
         * 加载
         *
         * @param msg
         */
        void showProgress(String msg);

        /**
         * 结束加载
         */
        void cancelProgress();

        /**
         * 分享
         * @param body
         */
        void openShare(ShareBody body);
    }

    interface Presenter extends IPresenter {

        /**
         * 执行发送计划书
         */
        void performSendProposal();

        /**
         * 执行语音操作
         */
        void performVoice();

        /**
         * 发送计划书
         */
        void sendProposal();

        /**
         * 请求计划书关联的录音
         *
         * @param proposalId
         */
        void getProposalTap(String proposalId);

        /**
         * 下载计划书关联的录音
         *
         * @param url
         */
        void downloadProposalTap(String url);

        /**
         * 生成一个分享数据
         */
        ShareBody generateShareBody(String shareContent);

        /**
         * 删除语音
         *
         * @param tapId
         */
        void deleteTap(String tapId, String proposalId);

        /**
         * 生成一个文件Part
         *
         * @param name
         * @param fileName
         * @param filePath
         * @return
         */
        MultipartBody.Part generateMultipartBody(String name, String fileName, String filePath);

        /**
         * 上传语音
         *
         * @param audioTap
         * @param proposalId
         */
        void uploadTap(AudioTap audioTap, String proposalId);

        /**
         * 上传或删除语音完成后，提交到服务端
         *
         * @param tap
         * @param proposalPickNum
         * @param flag            0 上传  1 删除
         */
        void sendPropsalTap(AudioTap tap, String proposalPickNum, int flag);
    }
}
